package com.noah.service;

import com.noah.dao.StudentDao;
import com.noah.pojo.Student;

import java.util.ArrayList;
import java.util.Scanner;

/**
 * @author linchaoran
 */
public class StudentService {
    private StudentDao studentDao = new StudentDao();
    private Scanner sc = new Scanner(System.in);

    /**
     * 增加学生信息
     */
    public boolean add() {

        String id;
        while (true) {
            //输入学号
            System.out.println("请输入学号");
            id = sc.next();
            boolean res = isExist(id);
            if (!res) {
                break;
            }else {
                System.out.println("输入的学号已存在，请重新输入");
            }
        }
        Student stu = getStudent(id);

        //调用DAO中增加学生方法
        return studentDao.add(stu);
    }

    /**
     * 获取一个学生对象
     *
     * @param id 学号
     * @return 返回一个学生对象
     */
    public Student getStudent(String id) {
        System.out.println("请输入姓名");
        String name = sc.next();
        System.out.println("请输入年龄");
        String age = sc.next();
        System.out.println("请输入地址");
        String address = sc.next();
        return new Student(id, name, age, address);
    }

    /**
     * 删除学生信息
     *
     * @param id 学号
     * @return 是否删除成功
     */
    public boolean del(String id) {
        int index = getIndexById(id);
        return studentDao.del(index);

    }

    /**
     * 更新学生对象
     *
     * @param id 学号
     * @return 是否更新成功
     */
    public boolean update(String id) {
        Student stu = getStudent(id);

        int index = getIndexById(id);
        return studentDao.update(index, stu);
    }

    /**
     * 根据学号寻找在集合中的下标
     *
     * @param id 学号
     * @return 下标索引
     */
    public int getIndexById(String id) {
        int index = -1;
        ArrayList<Student> list = studentDao.findAll();
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            if (id.equals(stu.getId())) {
                return i;
            }
        }
        return index;
    }

    /**
     * 查询所有学生
     *
     * @return 学生信息集合列表
     */
    public ArrayList<Student> findAll() {
        return studentDao.findAll();
    }

    /**
     * 判断学号是否存在
     *
     * @param id 学号
     * @return 存在返回true，不存在返回false
     */
    public boolean isExist(String id) {
        ArrayList<Student> list = studentDao.findAll();
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            if (id.equals(stu.getId())) {
                return true;
            }
        }
        return false;
    }
}